
                        - D I S I D E N T S - H A C K  J O U R N A L -

                                          Numero 2                        
                                             XX







                         TITLE:Conociendo el interior de la PC.Ingenieria inversa parte 1
                         AUTHOR:S-P-A-R-K  
			 DISIDENTS ARGENTINA


-------------------------------------------------------------------------------------------------
                                  Disclaimer:
-------------------------------------------------------------------------------------------------

Este texto es con fines puramente educativos y de investigacion, no incitando
a la delincuencia de ningun tipo, el autor no se hace responsable por ningun
acto indebido del lector, asi como el uso indebido de este texto, esta prohibida 
la modificacion del mismo sin autorizacin del autor.-

-------------------------------------------------------------------------------------------------
----[INDICE Conociendo el interior de la PC.Ingenieria inversa parte 1] -------------------------
-------------------------------------------------------------------------------------------------
----[0x00  Historia y conciencia                                                                -
----[0x01  Requerimientos                                                                       -
----[0x02  Que es el Cracking?                                                                 -
----[0x03  Tipos de proteccion                                                                  -
----[0x04  Recursos                                                                             -
-------------------------------------------------------------------------------------------------




-------------------------------------------------------------------------------------------------
---------------------------[0x00 Historia y conciencia ]-----------------------------------------
-------------------------------------------------------------------------------------------------    


La historia de la ingenieria inversa se remonta, a los principios informaticos
para no irme muy lejos pongamos una fecha estimativa, 1960 y 1970, en esa
decada surgieron muchas cosas interesantes, Internet comenzo como un proyecto
gubernamental que luego fue tomando fuerza, se expandio a las Universidades,
hasta llegar a hoy en dia, en donde todas las personas tienen acceso.
Tambin surgieron los primeros virus, a traves del famoso CoreWar, un ensam-
blador medio raro, creando pequeos programas, que eran compilados y carga
-dos en memoria, para luego destruirse entre si, y de ahi un ganador, por
supuesto el mejor programado, el mejor pensado, una especie de Quake totalmente
programable, la zona de memoria reservada para tal masacre, se podia visualizar
graficamente, cada programa con un color, donde cada uno se podia reproducir
poner trampas estrategicas para los contrincantes, llenar aleatoriamente las
zonas de memoria con 0 de tal manera de corromper los datos de los demas
programas y ganar, pero con el riesgo de destruirse a s mismo, un juego
realmente ingenioso, que corria a principios del ao 69 y sigue hoy usandose
en torneos under solo para viejos gurus.  ;-)
Salio el primer virus, que se reproducia y atacaba, en un laboratorio de inves
-tigacion donde se creo su vacuna, y de ahi nacio la guerra de los virus y los
anti-virus.
Hoy en dia manoseados los terminos del hacker, cracker, phreaker, son
temidos y a la vez idolatrados, tomados con pinza por la sociedad, pero
calificados como genios, son solo personas que buscan la informacion, para
entender, ser parte de un mundo espectacular, que es la informatica.
Pero no son personas que se hacen propaganda, y usan remeras con logos,
"yo soy hacker", al contrario son personas introvertidas, "raras", por
decirlo asi, como se decia antes, caballeros de la Red.
Los programas hace un par de decadas eran desensamblados (para los que son
novatos, desarmados) parcheados, y ensamblados miles de veces sin ningun pre
-juicio.
La conciencia para hacer este "arte", si se puede llamar asi, es pensar el
camino inverso, recorrerlo, usar la logica como lo haria el programador,
definir metas y objetivos, estar atentos, y por supuesto algo para tomar
y comer, como diria ORC (un viejo cracker, el cual desaparecio sin dejar
rastro, hoy en dia se lo sigue buscando) una botella de vodka,  ;)



-------------------------------------------------------------------------------------------------
---------------------[0x01 Requerimientos]-------------------------------------------------------
-------------------------------------------------------------------------------------------------


Para aprender ingenieria inversa se necesita:

* Conocer ensamblador, codificacion de instrucciones y lenguaje de maquina.
* Herramientas, como monitores ,debuggers, desensambladores, etc.
* Un cerebro, :*)

Una vez conseguido todo, podemos empezar.

Definamos en principio cada termino:

Algoritmo: serie de pasos para solucionar un problema.

Ensamblado: es convertir un algoritmo en cualquier lenguaje en lenguaje de
mquina entendible por la PC.

Desensamblado: antes mencion desarmar, pues es as, convertir el programa
compilado a ensamblador, para poder entenderlo.

Codificacion de instrucciones: generar de acuerdo a las instruciones en
ensamblador (de ahora en mas, asm), el lenguaje de maquina entendible a la PC.

Lenguaje de maquina: lenguaje entendible por la PC, conjunto de smbolos, hoy
en da son usados los simbolos ASCII.

Monitores: programas que "tracean" toda actividad en la PC o actividades por
separado, por ejemplo, la actividad en el registro de windows, las interrup-
ciones ejecutadas, las operaciones sobre archivos ejecutadas, etc.

Debuggers: programa que es utilizado para depurar programas, es decir, debug
viene del termino bug, que significa gusano, bug se le llama a los errores de
programacin, entonces de-bug es sacar errores, pero siempre con la ayuda del
programador, la mquina sin programas es un electrodomestico que gasta energia
nada ms. ;)

Desensambladores: herramienta que ayuda a desarmar un programa en lenguaje
entendible para el usuario, en la mayora de los casos asm.

Compiladores: un compilador genera de un lenguaje de programacion, un archivo
entendible para la PC, lenguaje de maquina.



-------------------------------------------------------------------------------------------------
---------------------[0x02  Que es el cracking ?]-----------------------------------------------
-------------------------------------------------------------------------------------------------


Gran problema no?, es una manera de llamar a la desproteccion de programas,
a traves de debuggers y desensambladores.
Hay programas que necesitan que te registres para que puedas hacer tal o cual
cosa, necesitas mandar dinero al autor del programa, el te devuelve un codigo
de registro, luego lo introducis y listo ya tens el programa completo.
Ahora, pensemos algo, puede ser que el programa incompleto, se convierta en
completo por un simple codigo?, es decir, se puede autoprogramar magicamente?
No, en absoluto, entonces que sucede?, el codigo de registro, permite o no
el uso del programa completo, simplemente, "Si estas registrado entonces
programa completo, sino programa incompleto"...
Como pueden ver, el programa copmleto depende del codigo de registro, por
supuesto vlido.
Entonces, viendo de esta manera la proteccion de los programas (algunas de
las protecciones son asi, luego veremos mas protecciones),podemos deducir que
se debe atacar el "Si...." y convertirlo de tal manera que haga exactamente lo
contrario y quede de esta manera: "Si NO estas registrado entonces programa
completo, sino programa incompleto", esta manera es la mas usual de hacerlo,
por supuesto hay miles de formas distintas, por eso es un "arte" como dije
antes. ;)
La ingenieria inversa es justamente cambiar un "SI tal cosa" por un "SI NO tal
cosa" invertir la logica del programa, en otras palabras.



-------------------------------------------------------------------------------------------------
---------------------[0x03 Tipos de proteccion]--------------------------------------------------
-------------------------------------------------------------------------------------------------     



Hay cientos de protecciones distintas, pero mostrar las mas comunes, luego
sern ustedes sus propios maestros, y podrn decidir que hacer y cuando.

Protecciones:

* por tiempo (dias, horas)
* por cantidad de ejecuciones
* por codigo de registro
* archivo llave
* mochila (en la jerga es dicho asi a los dispositivos que se necesitan
conectar al puerto serie le brindan datos al programa, y de esta manera
teniendo este dispositivo, el programa este completo)

As, se pueden mezclar estas protecciones, y generar un programa robusto.
Una proteccin usada comunmente para proteger las protecciones(paradojico no?)
es la encriptacin, esta se usa para hacer ilegible el cdigo de maquina,
anti-crackers o anti-lamers. ;-)
La encriptacin se lleva a cabo a traves de un algoritmo que toma el codigo
verdadero y lo transforma en codigo no legible; cuando el programa encriptado
se ejecuta, se desencripta en memoria con el algoritmo de encriptacion/desen
-criptacion que se encuentra en el mismo archivo.

Bueno, creo que esto es todo por hoy, proximamente escribir otra leccin,
adentrandonos en las tecnicas y los ataques mas comunes.


-------------------------------------------------------------------------------------------------
------------------------[0x04 Recursos]----------------------------------------------------------
-------------------------------------------------------------------------------------------------
A continuacin les pongo direcciones para los interesados en el tema:

http://www.crackstore.com
http://www.welcome.to/karpoff
http://www.emc2k.com/tricksoft/
http://kut.da.ru/


Agradecimientos a todos los componentes fuertes de la escena de la ingenieria
inversa, a toda la gente que desea llenarse la cabeza con algo mas que propagandas, luces de
colores y musica de juguete. ;-D

Saludos!

        SparK.

				---------------------------------------------------
				-       CONTACTA CONMIGO O CON EL TEAM            -
				---------------------------------------------------
				- NICK:	Spark                                     -
				- CARGO:     Director de Disidents Argentina      -    
				- MAIL:     spark@kernel.net             	  -	
				- TEAM:     disidents@yahoo.es                    -
				---------------------------------------------------



                     @@-------               @@---------------  
		    @@----                  @@---------       @@@@@@@@@  
		   @@--     @@@@@--        @@-- @@@@@       @     @@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@-------
              @@@@@@    @@ @@      @@ @@@@@@-  @@      @@@ @    @@  @@-----------------------------
             @@        @@ @@@@@   @@ @@---    @@@@@@   @@ @@   @@  @@@@@--------------
            @@        @@     @@  @@ @@ -     @@       @@ @@   @@      @@----------
             @@@@@@@ @@  @@@@@@ @@   @@@@@@@ @@@@@@@ @@  @@ @@	     @@--------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@------

